﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Shapes;
using app_Cd.logicaNegocio;

namespace app_Cd.presentacion
{
    /// <summary>
    /// Interaction logic for eliminaCd.xaml
    /// </summary>
    public partial class eliminaCd : Window
    {
        public eliminaCd()
        {
            InitializeComponent();
        }
        //variable para almacenar el id de un disco
        int idCd=0;
        private void btn_salir_Click(object sender, RoutedEventArgs e)
        {
            //Cierra este formulario y abre el formulario de ingreso de usuarios
            inicioUs iu = new inicioUs();
            iu.Show();
            iu.usuario(Convert.ToString(lbl_nombre.Content));
            this.Close();
        }
        /// <summary>
        /// Permite poner en un label el nombre del usuario que inicio sesión
        /// </summary>
        /// <param name="usuario">Nombre de usuario</param>
        public void usuario(string usuario)
        {
            lbl_nombre.Content = usuario;
        }

        private void btn_busquedaArt_Click(object sender, RoutedEventArgs e)
        {
            //Busca el id del artista correspondiente al buscado
            var artista = admDisco.buscaIdArtista(txt_busqueda.Text);
            //Validación para comprobar que exista el artista
            if (artista == null)
            {
                MessageBox.Show("Sin resultados", "Mensaje", MessageBoxButton.OK, MessageBoxImage.Information);
                cbo_discos.Items.Clear();
            }
            else
            {
                //Lista para almacenar los discos ya encontrados
                List<string> ListaCd = new List<string>();
                do
                {
                    //Busca el cd del artista pero que no este agregado a la lista de cd ya encontrados
                    var cd = admDisco.buscaCdArtista(ListaCd, artista.ID_artista);
                    //Validación para saber si la busqueda produjo algun resultado.
                    //Si no se rescatan datos o el cd ya se encuentra en el comboBox el ciclo se quiebra
                    if (cd == null)
                    {
                        break;
                    }
                    else if (cbo_discos.Items.Contains(cd.Nombre))
                    {
                        break;
                    }
                    else
                    {
                        cbo_discos.Items.Add(cd.Nombre);
                        ListaCd.Add(cd.Nombre);
                    }
                } while (ListaCd != null);
                //valida si se encontraron discos
                if(cbo_discos.Items.Count==0)
                {
                    MessageBox.Show("El artista no tiene discos", "Mensaje", MessageBoxButton.OK, MessageBoxImage.Error);
                }
                else
                {
                    MessageBox.Show("Discos encontrados", "Mensaje", MessageBoxButton.OK, MessageBoxImage.Information);
                }  
            }
        }

        private void btn_busquedaCd_Click(object sender, RoutedEventArgs e)
        {
            //Validación de campo vacío
            if (cbo_discos.SelectedIndex == -1)
            {
                MessageBox.Show("Realize una selección", "Mensaje", MessageBoxButton.OK, MessageBoxImage.Exclamation);
            }
            else
            {
                //realiza la petición de busqueda de cd a la clase
                var infoCd = admDisco.buscaInfoDisco(cbo_discos.Text);
                txt_categoria.Text = infoCd.Categoria.Descripcion;
                txt_anio.Text = Convert.ToString(infoCd.Anio);
                idCd = infoCd.ID_cd;
            }
        }

        private void btn_eliminar_Click(object sender, RoutedEventArgs e)
        {
            //Valida que se haya realizado una busqueda
            if (idCd == 0)
            {
                MessageBox.Show("Debe realizar una busqueda", "Mensaje", MessageBoxButton.OK, MessageBoxImage.Exclamation);
            }
            else 
            {
                //Realiza la petición de eliminación de cd a la clase
                string mensaje = admDisco.eliminaCd(idCd);
                MessageBox.Show(mensaje, "Mensaje", MessageBoxButton.OK, MessageBoxImage.Information);
                limpiar();
            }
        }
        /// <summary>
        /// Permite limpiar todos los campos del formulario
        /// </summary>
        public void limpiar()
        {
            idCd = 0;
            txt_busqueda.Clear();
            txt_categoria.Clear();
            txt_anio.Clear();
            cbo_discos.Items.Clear();
        }
    }
}
